Encryption algorithms are designed to provide message privacy, but may not enable a receiver to detect alterations to a message during transmission from a sender to a receiver, that is, such algorithms may not provide a guarantee of message integrity. Message authentication codes, in contrast, are designed to provide message integrity, but may not obscure the content of the message from unauthorized third parties, that is, such codes may not provide a guarantee of message privacy. Authenticated encryption algorithms are a known class of cryptographic algorithms that provide a guarantee of both message privacy and message integrity.
Parallel computation is a computing paradigm wherein complex computational tasks are divided into sub-tasks and such sub-tasks are processed in parallel. By employing a plurality of processors to complete sub-tasks in parallel, the real-world time required for completing a task may be substantially reduced. However, not all algorithms are suitable for parallel computation, in part depending upon the extent to which an algorithm may be divided into substantially independent sub-tasks.
Computing devices typically comprise various types of computer storage having different characteristics. For example, modern personal computers may comprise several gigabytes of high-speed random-access memory (RAM) and several terabytes of storage in the form of, for example, a mechanical hard disk drive having significantly slower data access and transfer times than RAM. Typically, due to the disparity in data access and data transfer times, among other things, the input for a data processing algorithm is loaded or received into RAM from data storage means or data receiving means prior to being operated upon while stored in RAM.
Particularly for the processing of large data sets that may exceed the available RAM of a computing device, whether an algorithm is capable of operating on only the portion loaded into RAM of such a larger data set may be relevant. If so, in some cases, the algorithm is said to be capable is operating in a streaming manner. As for parallel computation, not all algorithms are capable of operating in a streaming manner.
Certain prior art encryption algorithms such as block ciphers operating in a mode of operation known as counter mode support parallel computation. Certain other prior art encryption algorithms may be operated in a streaming manner.